package com.neusoft.crm.controller;

import com.neusoft.crm.po.ClientInfo;
import com.neusoft.crm.po.ClientLinkMan;
import com.neusoft.crm.po.Orders;
import com.neusoft.crm.service.IClientInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 客户信息前端接口类
 *
 * @author lanan1207
 */
@RestController
public class ClientInfoController {
    @Autowired
    private IClientInfoService clientInfoService;

    /**
     * 客户信息列表
     *
     * @param clientInfo 请求体：客户信息
     * @return 所有用户
     */
    @RequestMapping("/showClientInfoList")
    public List<ClientInfo> showClientInfoList(@RequestBody ClientInfo clientInfo) {
        return clientInfoService.showClientInfoList(clientInfo);
    }

    /**
     * 编辑客户信息
     *
     * @param clientInfo 请求体：客户信息
     * @return 更新后的客户信息
     */
    @RequestMapping("/updateClientInfo")
    public int updateClientInfo(@RequestBody ClientInfo clientInfo) {
        return clientInfoService.updateClientInfo(clientInfo);
    }

    /**
     * 显示对应客户信息详情
     *
     * @param clientInfo 请求体：客户信息
     * @return 客户信息
     */
    @RequestMapping("/selectClientInfoByCode")
    public ClientInfo selectClientInfoByCode(@RequestBody ClientInfo clientInfo) {
        return clientInfoService.selectClientInfoByCode(clientInfo);
    }

    /**
     * 显示对应客户的订单信息
     *
     * @param clientInfo 请求体：要查看订单的客户
     * @return 客户订单
     */
    @RequestMapping("/selectOrdersByclientCode")
    public List<Orders> selectOrdersByclientCode(@RequestBody ClientInfo clientInfo) {
        return clientInfoService.selectOrdersByclientCode(clientInfo);
    }

    /**
     * 显示对应客户的联系人
     *
     * @param clientLinkMan 请求体：客户联系人
     * @return 该客户对应的联系人
     */
    @RequestMapping("selectClientLinkManByclientCode")
    public List<ClientLinkMan> selectClientLinkManByclientCode(@RequestBody ClientLinkMan clientLinkMan) {
        return clientInfoService.selectClientLinkManByclientCode(clientLinkMan);
    }

    /**
     * 新建客户联系人
     *
     * @param clientLinkMan 请求体：客户联系人
     * @return 受影响的行数
     */
    @RequestMapping("/insertClientLinkMan")
    public int insertClientLinkMan(@RequestBody ClientLinkMan clientLinkMan) {
        return clientInfoService.insertClientLinkMan(clientLinkMan);
    }

    /**
     * 编辑客户联系人
     *
     * @param clientLinkMan 请求体：客户联系人
     * @return 受影响的行数
     */
    @RequestMapping("/updateClientLinkMan")
    public int updateClientLinkMan(@RequestBody ClientLinkMan clientLinkMan) {
        return clientInfoService.updateClientLinkMan(clientLinkMan);
    }

    /**
     * 根据客户Id显示对应客户联系人详情
     *
     * @param clientInfo 要显示联系人详情的客户
     * @return 对应的联系人信息
     */
    @RequestMapping("/selectClientLinkMan")
    public List<ClientLinkMan> selectClientLinkMan(@RequestBody ClientInfo clientInfo) {
        return clientInfoService.selectClientLinkMan(clientInfo);
    }

    /**
     * 根据客户id删除客户联系人
     *
     * @param clientLinkMan 请求体：客户联系人
     * @return 受影响的行数
     */
    @RequestMapping("/deleteClientLinkMan")
    public int deleteClientLinkMan(@RequestBody ClientLinkMan clientLinkMan) {
        return clientInfoService.deleteClientLinkMan(clientLinkMan);
    }

    /**
     * 新建客户信息
     *
     * @param clientInfo 请求体：客户信息
     * @return 受影响的行数
     */
    @RequestMapping("/insertClient")
    public int insertClient(@RequestBody ClientInfo clientInfo) {
        return clientInfoService.insertClient(clientInfo);
    }


    /**
     * 根据输入信息模糊查找客户
     *
     * @param clientInfo 请求体：客户信息
     * @return 查找到的客户
     */
    @RequestMapping("/selectClientInfo")
    public List<ClientInfo> selectClientInfo(@RequestBody ClientInfo clientInfo) {
        clientInfo.setClientState(1);
        return clientInfoService.selectClientInfo(clientInfo);
    }

    /**
     * 根据输入信息模糊查找客户
     *
     * @param clientInfo 请求体：客户信息
     * @return 查找到的客户
     */
    @RequestMapping("/selectLostClientInfo")
    public List<ClientInfo> selectLostClientInfo(@RequestBody ClientInfo clientInfo) {
        clientInfo.setClientState(2);
        return clientInfoService.selectClientInfo(clientInfo);
    }
}
